from ffmpy import FFmpeg
from pathlib import Path
import logging
logger = logging.getLogger(__name__)

def video_coding(fp,tf):
    '''硬件解码+硬件编码cpu使用率很低速率5.3x h264CPU编码速率1.7x'''
    path = Path(fp)
    # 检查输入文件是否存在
    if not path.exists():
        logger.error(f" 输入: {path} ---文件或目录不存在")
        return
    
    # 如果 target_folder 为空，则使用 source_file 的同一目录
    if not tf:
        tf = path.parent
    else:
        tf = Path(tf)

    # 确保目标文件夹存在
    tf.mkdir(parents=True, exist_ok=True)

    # 使用源文件的后缀来创建目标文件名
    target_file = f"{tf}/{path.stem}_To{path.suffix}"

    ff = FFmpeg(
        # Decoding(DX11: -hwaccel d3d11va  -hwaccel_output_format d3d11) (DX9: -hwaccel dxva2),(qsv解码: -c:v h264_qsv -global_quality 23)-c:a aac -b:a 128K,-acodec copy,-vcodec copy
        inputs={str(fp): f'-hwaccel vulkan -hwaccel_output_format vulkan'},
        outputs={str(target_file):'-c:v h264_amf -acodec copy -y'}
    )
    ff.run()
if __name__ == '__main__':
    filepath = r"D:\Documents\videos\4K.DEMO\4k60FPS 女团热舞.mp4"
    target_folder = r""
    video_coding(filepath,target_folder)
